from IAccion import IAccion
from ITener import ITener
# -*- coding: utf-8 -*-

class IAbrir(object):

	"""
	Interfaz que es implementada por todos los objetos que pueden abrirse y cerrarse.
	@since: 4/14/2011
	@version: 1.0
	"""
	__abierto = False
	""" Bandera para saber si un objeto esta abierto """
	__accion=None
	
	def __init__(self):
		"""
		Constructor
		@type	self: IAbrir
		@param	self: referencia al objeto IAbrir actual
		"""
		self.__accion=IAccion("", "{verbo} {articulo0} {objeto0}")
		if(isinstance(self, ITener)):
			self.ocultarTodo()
		
			
	def abro(self):
		"""
		Metodo para abrir el IAbrir
		@type	self: IAbrir
		@param	self: referencia al objeto IAbrir actual
		"""
		self.__open()

	def cierro(self):
		"""
		Metodo para cerrar el IAbrir
		@type	self: IAbrir
		@param	self: referencia al objeto IAbrir actual
		"""
		self.__close()
		
	def abrir(self):
		"""
		Metodo para abrir el IAbrir
		@type	self: IAbrir
		@param	self: referencia al objeto IAbrir actual
		"""
		self.__open()

	def cerrar(self):
		"""
		Metodo para cerrar el IAbrir
		@type	self: IAbrir
		@param	self: referencia al objeto IAbrir actual
		"""
		self.__close()

	def __open(self):
		"""
		Metodo para abrir el IAbrir (cambio de bandera)
		@type	self: IAbrir
		@param	self: referencia al objeto IAbrir actual
		"""
		self.__abierto = True
		if(isinstance(self, ITener)):
			self.mostrarTodo()
	
	def __close(self):
		"""
		Metodo para cerrar el IAbrir (cambio de bandera)
		@type	self: IAbrir
		@param	self: referencia al objeto IAbrir actual
		"""
		self.__abierto = False
		if(isinstance(self, ITener)):
			self.ocultarTodo()
			
	def getAbierto(self):
		"""
		Metodo para retornar el estado del IAbrir. True = Abierto, False = Cerrado
		@type	self: IAbrir
		@param	self: referencia al objeto IAbrir actual
		"""
		return self.__abierto
		
	def getAcciones(self, objeto, heroe=None):
		"""
		Devuelve las acciones que realiza la interfaz
		@type	self: IAbrir
		@param	self: referencia al objeto IAbrir actual
		
		@type	objeto: IAbrir
		@param	objeto: referencia al objeto IAbrir que se desea analizar.
		"""
		if(objeto.getAbierto()):
			self.__accion.verbo="Cerrar"
		else:
			self.__accion.verbo="Abrir"
		
		return [self.__accion]
